Til Home

2020-05-26-TIL

Fact

  • 오늘 아침에 combination 어떻게 짜는지 공부를 했다. 인터넷에 나와있는 풀이법을 보고, 적용해보고, 분해해보면서 공부를 했다. 적용은 저번 주 토요일에 vscode에서 마저 못 풀었던 문제의 풀이에 적용을 해서 돌려봤다. 돌려보니 원하는 값을 얻어서 그때부터 분해를 했다. 분해를 하기 위해서 종이에 하나씩 어떻게 돌아가는지 적었다. 풀이법에서 이진수를 써서 콤비네이션을 썼는데 이 이진수와 인덱스를 섞어서 알맞은 것을 배열에 담아서 리턴을 해줬다. 정확하게 말해서 배열에 값들이 있으면 그 배열들의 모든 경우의 수의 합들을 구하기 위해서 2^(배열의 길이) 만큼 for을 돌려서 그 돌리는 걸 이진수로 만들고 이 이진수를 배열을 다시 loop을 돌려서 이진수를 배열의 index 만큼 오른쪽으로 이동을 하면서 일의 자리수의 이진수가 1이 맞는다면 이진수 값을 십진수로 바꿔서 저장하는 방식으로 구하는 것이다. 그리고 그 저장한 것을 합해서 새로운 배열에 저장한다. 나중에 최종적으로 모든 합 합을 이 새로운 배열에 저장한 것을 돌려준다.
  • combination 공부 후에 다시 코어 자바 9의 책을 보면서 코드를 수정하면서 공부를 했다. enum을 case 모처럼 적용을 해보려고 했는데 이상해서 중간에 그만뒀다. 그 후에 클래스 로더랑 proxy 등을 보고 다시 3장부터 주어진 코드를 쳐보고 수정하면서 공부를 했다.

Feeling

  • 2진수를 써서 combination을 구현하는 것을 보고 어떻게 생각을 해냈는지 정말 신기했다. 역시 난놈들이 참 많다고 생각이 든다.
  • enum으로 case 같은 것을 짜보려고 했지만 이상한 느낌이 들어서 중간에 그만두었다. 이렇게 짤 수는 있지만 굳이 짤 필요가 없었다. 시간 낭비 안 해서 다행이다. enum 이놈!

Findings

  • controller에서 ui와 domain을 연결을 시켜주는데 이때 ui와 domain이 정확하게 무엇을 하는지의 메서드를 표시해 주는 게 아니라 controller이 메시지를 보내는 것이다. 그리고 결과도 그냥 메시지로 받아서 그 메시지로 받아서 다른 곳에 다시 뿌리는 역할을 하는 것이다. 정수 배열은 [I String 배열은 [L , 이중 혹은 이상은 [ 가 앞에 더 찍힌다.
  • 배열을 콘솔로 찍어 보고 싶을 때는 toStrings를 쓰고 이중 혹은 그 이상의 배열을 콘솔로 찍어 보고 싶을 때는 deepToStrings를 쓰면 된다
  • proxy는 실제 서비스를 사용해서 그 위에서 새로운 성격을 추가한다. 이것으로 사용자가 원하는 성격을 띤 인터페이스가 같은 서비스를 쓸 수 있다. 예를 들어서 서비스를 실행하기 전/후에 실행해야 할 코드가 있을 시에 서비스를 실행하기 전에 프락시의 코드를 거쳐서 가게끔 만든다. proxy를 쓰는 이유가 꾀 된다. 하나는 lazy installation이라고 무거운 서비스를 당장 필요 없을 시에 나중에 필요할 때 실행한다. 하나는 access control이다. 특정 유저만 이 서비스를 사용할 수 있게끔 만들 수 있다. 하나는 request에 대한 logging을 하고 싶을 때 proxy를 써서 서버를 감싸서 거기에 데가 logging 구현을 하면 된다. 그리고 caching request result도 있다. request에 대한 result를 caching을 해서 사용자가 같은 request를 하면 cache에 저장된 result를 주는 기능을 구현하기도 한다.

Future action

  • 이진수로 combination을 짜는 것을 보고 놀랐다. 역시 수학의 중요성을 느꼈는데 정말 시간이 나면 수학 공부 좀 해봐야겠다.
  • 오늘 프로젝트의 피드백을 받아 봤는데 역시 피드백을 받으니깐 문제들이 속속히 보였다. 다음에도 피드백을 자주 받도록 하자.

Feedback


layout: TIL title: “2020-05-26-TIL” template: “til” date: “2020-05-26” description: ”


Fact

  • 오늘 아침에 combination 어떻게 짜는지 공부를 했다. 인터넷에 나와있는 풀이법을 보고, 적용해보고, 분해해보면서 공부를 했다. 적용은 저번 주 토요일에 vscode에서 마저 못 풀었던 문제의 풀이에 적용을 해서 돌려봤다. 돌려보니 원하는 값을 얻어서 그때부터 분해를 했다. 분해를 하기 위해서 종이에 하나씩 어떻게 돌아가는지 적었다. 풀이법에서 이진수를 써서 콤비네이션을 썼는데 이 이진수와 인덱스를 섞어서 알맞은 것을 배열에 담아서 리턴을 해줬다. 정확하게 말해서 배열에 값들이 있으면 그 배열들의 모든 경우의 수의 합들을 구하기 위해서 2^(배열의 길이) 만큼 for을 돌려서 그 돌리는 걸 이진수로 만들고 이 이진수를 배열을 다시 loop을 돌려서 이진수를 배열의 index 만큼 오른쪽으로 이동을 하면서 일의 자리수의 이진수가 1이 맞는다면 이진수 값을 십진수로 바꿔서 저장하는 방식으로 구하는 것이다. 그리고 그 저장한 것을 합해서 새로운 배열에 저장한다. 나중에 최종적으로 모든 합 합을 이 새로운 배열에 저장한 것을 돌려준다.
  • combination 공부 후에 다시 코어 자바 9의 책을 보면서 코드를 수정하면서 공부를 했다. enum을 case 모처럼 적용을 해보려고 했는데 이상해서 중간에 그만뒀다. 그 후에 클래스 로더랑 proxy 등을 보고 다시 3장부터 주어진 코드를 쳐보고 수정하면서 공부를 했다.

Feeling

  • 2진수를 써서 combination을 구현하는 것을 보고 어떻게 생각을 해냈는지 정말 신기했다. 역시 난놈들이 참 많다고 생각이 든다.
  • enum으로 case 같은 것을 짜보려고 했지만 이상한 느낌이 들어서 중간에 그만두었다. 이렇게 짤 수는 있지만 굳이 짤 필요가 없었다. 시간 낭비 안 해서 다행이다. enum 이놈!

Findings

  • controller에서 ui와 domain을 연결을 시켜주는데 이때 ui와 domain이 정확하게 무엇을 하는지의 메서드를 표시해 주는 게 아니라 controller이 메시지를 보내는 것이다. 그리고 결과도 그냥 메시지로 받아서 그 메시지로 받아서 다른 곳에 다시 뿌리는 역할을 하는 것이다. 정수 배열은 [I String 배열은 [L , 이중 혹은 이상은 [ 가 앞에 더 찍힌다.
  • 배열을 콘솔로 찍어 보고 싶을 때는 toStrings를 쓰고 이중 혹은 그 이상의 배열을 콘솔로 찍어 보고 싶을 때는 deepToStrings를 쓰면 된다
  • proxy는 실제 서비스를 사용해서 그 위에서 새로운 성격을 추가한다. 이것으로 사용자가 원하는 성격을 띤 인터페이스가 같은 서비스를 쓸 수 있다. 예를 들어서 서비스를 실행하기 전/후에 실행해야 할 코드가 있을 시에 서비스를 실행하기 전에 프락시의 코드를 거쳐서 가게끔 만든다. proxy를 쓰는 이유가 꾀 된다. 하나는 lazy installation이라고 무거운 서비스를 당장 필요 없을 시에 나중에 필요할 때 실행한다. 하나는 access control이다. 특정 유저만 이 서비스를 사용할 수 있게끔 만들 수 있다. 하나는 request에 대한 logging을 하고 싶을 때 proxy를 써서 서버를 감싸서 거기에 데가 logging 구현을 하면 된다. 그리고 caching request result도 있다. request에 대한 result를 caching을 해서 사용자가 같은 request를 하면 cache에 저장된 result를 주는 기능을 구현하기도 한다.

Future action

  • 이진수로 combination을 짜는 것을 보고 놀랐다. 역시 수학의 중요성을 느꼈는데 정말 시간이 나면 수학 공부 좀 해봐야겠다.
  • 오늘 프로젝트의 피드백을 받아 봤는데 역시 피드백을 받으니깐 문제들이 속속히 보였다. 다음에도 피드백을 자주 받도록 하자.

Feedback